home *** CD-ROM | disk | FTP | other *** search
/ PC World 2008 September / PCWorld_2008-09_cd.bin / v cisle / sadanastroju / delicious_bookmarks-2.0.64-fx.xpi / chrome / deliciousBookmarks.jar / content / ybBookmarksTree.xml < prev    next >
Encoding:
Extensible Markup Language  |  2008-06-19  |  12.6 KB  |  262 lines

  1. <?xml version="1.0"?>
  2. <!DOCTYPE window [
  3.   <!ENTITY % bookmarksDTD SYSTEM "chrome://browser/locale/bookmarks/bookmarks.dtd" >
  4.     <!ENTITY % ybookmarksDTD SYSTEM "chrome://ybookmarks/locale/ybookmarks.dtd" >
  5.   %bookmarksDTD;
  6.     %ybookmarksDTD;
  7. ]>
  8. <bindings id="bookmarksBindings" 
  9.                     xmlns="http://www.mozilla.org/xbl"
  10.           xmlns:xul="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
  11.                     xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
  12.           xmlns:xbl="http://www.mozilla.org/xbl">
  13.  
  14.      <binding id="ybBookmarksTree" extends="chrome://browser/content/bookmarks/bookmarksTree.xml#bookmarks-tree-full">
  15.          <implementation>
  16.              <field name="_storeService" />
  17.             
  18.              <field name="_memDataSource" />
  19.             
  20.              <field name="_rdfService" />
  21.              <field name="_rdfContainerUtils" />
  22.              
  23.              <field name="_rsrcURL" />
  24.              <field name="_rsrcImported" />
  25.              <field name="_rsrcImportedTrue" />
  26.             
  27.        <constructor><![CDATA[
  28.                try {
  29.                         this._storeService = Components.classes["@mozilla.org/ybookmarks-store-service;1"].
  30.                                                             getService(Components.interfaces.nsIYBookmarksStoreService);
  31.                         this._rdfService = Components.classes["@mozilla.org/rdf/rdf-service;1"].
  32.                                                   getService(Components.interfaces.nsIRDFService);
  33.                         this._rdfContainerUtils = Components.classes["@mozilla.org/rdf/container-utils;1"].
  34.                                                        getService(Components.interfaces.nsIRDFContainerUtils);
  35.                             
  36.                         this._rsrcURL = this._rdfService.GetResource("http://home.netscape.com/NC-rdf#URL");        
  37.                         this._rsrcImported = this._rdfService.GetResource("http://home.netscape.com/NC-rdf#Imported");
  38.                         this._rsrcImportedTrue = this._rdfService.GetLiteral("importedBookmark");
  39.                         this._setupDataSource();
  40.  
  41.                     } catch (e) {
  42.                         yDebug.print("ybBookmarksTree constructor: " + e);
  43.                     }
  44.        ]]></constructor>
  45.             
  46.             <method name="_setupDataSource">
  47.               <body>
  48.                 <![CDATA[
  49.                 try {
  50.                     var bmTree = document.getAnonymousElementByAttribute(this, "anonid", "bookmarks-tree");
  51.                     var dsEnum = bmTree.database.GetDataSources();
  52.                     var bmDataSource = null;
  53.                     
  54.                     while (dsEnum.hasMoreElements()) {
  55.                         var ds = dsEnum.getNext().QueryInterface(Components.interfaces.nsIRDFDataSource);
  56.                         if (ds.URI == "rdf:bookmarks") {
  57.                             bmDataSource = ds;
  58.                             break;
  59.                         }
  60.                     }
  61.                     this._memDataSource = Components.classes["@mozilla.org/rdf/datasource;1?name=in-memory-datasource"].
  62.                                 createInstance(Components.interfaces.nsIRDFInMemoryDataSource);
  63.                     this._memDataSource.QueryInterface(Components.interfaces.nsIRDFDataSource);
  64.                     
  65.                     var bmRoot = this._rdfService.GetResource("NC:BookmarksRoot")
  66.                     
  67.                     this._traverseBookmarkTree(bmDataSource, bmRoot);
  68.     
  69.                     bmTree.database.AddDataSource(this._memDataSource);
  70.                     
  71.                     } catch(e) {
  72.                         yDebug.print("ybBookmarksManager.setupDataSource():" + e);
  73.                     }
  74.                 ]]>
  75.                 </body>
  76.             </method>
  77.             
  78.             <method name="_traverseBookmarkTree">
  79.                 <parameter name="bmDataSource" />
  80.                 <parameter name="aRoot" />
  81.               <body>
  82.                 <![CDATA[
  83.                 
  84.                         var urlParser = Components.classes["@mozilla.org/network/url-parser;1?auth=maybe"].
  85.                                                             createInstance(Components.interfaces.nsIURLParser);
  86.  
  87.                         var normalizeUrl = function(url) { //lowercase the domain
  88.                             var schemePos = new Number();
  89.                             var schemeLen = new Number();
  90.                             var authPos        = new Number();
  91.                             var authLen     = new Number();
  92.                             var pathPos     = new Number();
  93.                             var pathLen     = new Number();
  94.                             urlParser.parseURL(url, url.length, schemePos, schemeLen, authPos, authLen, pathPos, pathLen);
  95.                 
  96.                             var auth = url.substr(authPos.value, authLen.value);
  97.                             var userPos = new Number();
  98.                             var userLen = new Number();
  99.                             var passPos    = new Number();
  100.                             var passLen = new Number();
  101.                             var hostPos = new Number();
  102.                             var hostLen = new Number();
  103.                             var port         = new Number();
  104.                             urlParser.parseAuthority(auth, auth.length, userPos, userLen, passPos, passLen, hostPos, hostLen, port);
  105.                             
  106.                             var domainStart = hostPos.value + authPos.value;
  107.                             var domainLen = hostLen.value;
  108.                             
  109.                             var normUrl = url.substring(0, domainStart) + url.substr(domainStart, domainLen).toLowerCase() + url.substring(domainStart+domainLen);
  110.                             if (pathLen.value == -1) {
  111.                                 normUrl += "/";
  112.                             }
  113.                             return normUrl;
  114.                             
  115.                         };
  116.                         var queue = [ aRoot ];
  117.                         while (queue.length > 0) {
  118.                             var node = queue.shift();
  119.                             if (bmDataSource.hasArcOut(node, this._rsrcURL)) {
  120.                                 // check if the node's a bookmark
  121.                                 var url = bmDataSource.GetTarget(node, this._rsrcURL, true).QueryInterface(Components.interfaces.nsIRDFLiteral).Value;
  122.                                 var normUrl = normalizeUrl(url);
  123. //                                yDebug.print("url: " + url);
  124. //                                yDebug.print("normalized url: " + normUrl);
  125.                                 
  126.                                 if (this._storeService.isBookmarked(normUrl)) {
  127.                                      this._memDataSource.Assert(node, this._rsrcImported, this._rsrcImportedTrue, true);
  128.                                 }
  129.                             } else if (this._rdfContainerUtils.IsSeq(bmDataSource, node)) {
  130.                                 // if it's a folder, add the resources                            
  131.                                     var nodeSeq = this._rdfContainerUtils.MakeSeq(bmDataSource, node);
  132.                                     var nodeEnum = nodeSeq.GetElements();
  133.  
  134.                                     while (nodeEnum.hasMoreElements()) {
  135.                                         var rsrc = nodeEnum.getNext().QueryInterface(Components.interfaces.nsIRDFResource);
  136.                                         queue.push(rsrc);
  137.                                     }
  138.                             
  139.                         }
  140.                     }
  141.                 ]]>
  142.                 </body>
  143.             </method>
  144.             
  145.         </implementation>
  146.         
  147.        <xbl:content xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" xmlns:xbl="http://www.mozilla.org/xbl"
  148.                   contextmenu="_child">
  149.        <!-- XXXben need focus event handler for cmd update -->
  150.        <!-- context menu -->
  151.        <menupopup onpopupshowing="this.parentNode.createTreeContextMenu(event);"
  152.                   onpopuphidden="if (content) content.focus()"
  153.                   onclick="event.stopPropagation();"
  154.                   onkeypress="event.stopPropagation();"/>
  155.        <vbox flex="1">
  156.          <tree anonid="bookmarks-tree" flex="1" class="plain" enableColumnDrag="true"
  157.                    datasources="rdf:bookmarks rdf:files rdf:localsearch" ref="NC:BookmarksTopRoot" flags="dont-build-content"
  158.                    onkeypress="if (event.keyCode == 13) this.parentNode.parentNode.openItemKey();"
  159.                    onclick="this.parentNode.parentNode.openItemClick(event, 1);"
  160.                    ondblclick="this.parentNode.parentNode.openItemClick(event, 2);"
  161.                    ondraggesture="if (event.originalTarget.localName == 'treechildren') nsDragAndDrop.startDrag(event, this.parentNode.parentNode.DNDObserver);"
  162.                    onselect="this.treeBoxObject.view.selectionChanged();">
  163.            <template xmlns:nc="http://home.netscape.com/NC-rdf#">
  164.              <rule rdf:type="http://home.netscape.com/NC-rdf#BookmarkSeparator">
  165.                <treechildren>
  166.                  <treeitem uri="rdf:*">
  167.                    <treerow properties="rdf:http://www.w3.org/1999/02/22-rdf-syntax-ns#type separator">
  168.                      <treecell properties="separator" label="rdf:http://home.netscape.com/NC-rdf#Name"/>
  169.                    </treerow>
  170.                  </treeitem>
  171.                </treechildren>
  172.              </rule>
  173.              <rule rdf:type="http://home.netscape.com/NC-rdf#MicsumBookmark">
  174.                <treechildren>
  175.                  <treeitem uri="rdf:*">
  176.                    <treerow properties="rdf:http://www.w3.org/1999/02/22-rdf-syntax-ns#type rdf:http://home.netscape.com/NC-rdf#loading rdf:http://home.netscape.com/WEB-rdf#status">
  177.                                          <treecell src="rdf:http://home.netscape.com/NC-rdf#Icon"
  178.                                label="rdf:http://home.netscape.com/NC-rdf#GeneratedTitle"/>
  179.                      <treecell properties="rdf:http://home.netscape.com/NC-rdf#Imported"/>
  180.                      <treecell label="rdf:http://home.netscape.com/NC-rdf#URL" />
  181.                      <treecell label="rdf:http://home.netscape.com/NC-rdf#ShortcutURL" />
  182.                      <treecell label="rdf:http://home.netscape.com/NC-rdf#Description" />
  183.                      <treecell label="rdf:http://home.netscape.com/NC-rdf#BookmarkAddDate" />
  184.                      <treecell label="rdf:http://home.netscape.com/WEB-rdf#LastModifiedDate" />
  185.                      <treecell label="rdf:http://home.netscape.com/WEB-rdf#LastVisitDate"/>
  186.                    </treerow>
  187.                  </treeitem>
  188.                </treechildren>
  189.              </rule>
  190.              <rule>
  191.                <treechildren>
  192.                  <treeitem uri="rdf:*">
  193.                    <treerow properties="rdf:http://www.w3.org/1999/02/22-rdf-syntax-ns#type rdf:http://home.netscape.com/NC-rdf#loading rdf:http://home.netscape.com/WEB-rdf#status">
  194.                      <treecell src="rdf:http://home.netscape.com/NC-rdf#Icon"
  195.                                label="rdf:http://home.netscape.com/NC-rdf#Name"/>
  196.                                          <treecell properties="rdf:http://home.netscape.com/NC-rdf#Imported"/>
  197.                      <treecell label="rdf:http://home.netscape.com/NC-rdf#URL" />
  198.                      <treecell label="rdf:http://home.netscape.com/NC-rdf#ShortcutURL" />
  199.                      <treecell label="rdf:http://home.netscape.com/NC-rdf#Description" />
  200.                      <treecell label="rdf:http://home.netscape.com/NC-rdf#BookmarkAddDate" />
  201.                      <treecell label="rdf:http://home.netscape.com/WEB-rdf#LastModifiedDate" />
  202.                      <treecell label="rdf:http://home.netscape.com/WEB-rdf#LastVisitDate"/>
  203.                    </treerow>
  204.                  </treeitem>
  205.                </treechildren>
  206.              </rule>
  207.            </template>
  208.            <treecols anonid="treecols">
  209.              <treecol id="Name" label="&treecol.name.label;" flex="1" primary="true"
  210.                            class="sortDirectionIndicator" 
  211.                            persist="width hidden ordinal" 
  212.                            sort="rdf:http://home.netscape.com/NC-rdf#Name"
  213.                            sortActive="true" sortDirection="none"/>
  214.              <splitter class="tree-splitter" />
  215.                      <treecol id="Imported" label="&ybbookmarksmanager.treecol.imported.label;"
  216.                               class="sortDirectionIndicator" 
  217.                               persist="width hidden ordinal"
  218.                               sort="rdf:http://home.netscape.com/NC-rdf#Imported" />
  219.                          <splitter class="tree-splitter" />
  220.              <treecol id="URL" label="&treecol.url.label;" 
  221.                            flex="1" class="sortDirectionIndicator" 
  222.                            sort="rdf:http://home.netscape.com/NC-rdf#URL" 
  223.                            persist="width hidden ordinal" />
  224.              <splitter class="tree-splitter" />
  225.              <treecol id="ShortcutURL" label="&treecol.shortcut.label;" 
  226.                            hidden="true" flex="1" class="sortDirectionIndicator" 
  227.                            persist="hidden width ordinal" 
  228.                            sort="rdf:http://home.netscape.com/NC-rdf#ShortcutURL"/>
  229.              <splitter class="tree-splitter"/>
  230.              <treecol id="Description" label="&treecol.description.label;" 
  231.                            flex="1" class="sortDirectionIndicator" 
  232.                            persist="hidden width ordinal" 
  233.                            sort="rdf:http://home.netscape.com/NC-rdf#Description"/>
  234.              <splitter class="tree-splitter"/>
  235.              <treecol id="AddDate" label="&treecol.addedon.label;" 
  236.                            hidden="true" flex="1" class="sortDirectionIndicator" 
  237.                            sort="rdf:http://home.netscape.com/NC-rdf#BookmarkAddDate" 
  238.                            persist="width hidden ordinal" />
  239.              <splitter class="tree-splitter" />
  240.              <treecol id="LastModDate" label="&treecol.lastmod.label;" 
  241.                            hidden="true" flex="1" class="sortDirectionIndicator" 
  242.                            sort="rdf:http://home.netscape.com/WEB-rdf#LastModifiedDate" 
  243.                            persist="width hidden ordinal" />
  244.              <splitter class="tree-splitter" />
  245.              <treecol id="LastVisitDate" label="&treecol.lastvisit.label;" 
  246.                            hidden="true" flex="1" class="sortDirectionIndicator" 
  247.                            sort="rdf:http://home.netscape.com/WEB-rdf#LastVisitDate" 
  248.                            persist="width hidden ordinal" />
  249.                           <splitter class="tree-splitter" />
  250.            </treecols>
  251.          </tree>
  252.        </vbox>
  253.      </xbl:content>
  254.      
  255.    </binding>
  256.    
  257.  
  258.  
  259. </bindings>
  260.  
  261.  
  262.